package com.xebest.web.mapper.read;

import com.xebest.web.form.XeVenCarForm;
import com.xebest.web.form.XeVenOrderLogisticsForm;
import com.xebest.web.model.XeVenOrderLogistics;
import com.xebest.web.model.XeVenOrderLogisticsDetail;
import com.xebest.web.view.XeVenOrderLogisticsView;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 物流信息
 *
 * @author 赵盼飞
 */
@Repository
public interface XeVenOrderLogisticsReadMapper {

    /**
     * 获取物流信息列表
     *
     * @author 赵盼飞
     */
    List<XeVenOrderLogistics> selectLogisticsList(XeVenOrderLogisticsForm logisticsForm);

    /**
     * 获取物流详情
     *
     * @author 赵盼飞
     */
    List<XeVenOrderLogisticsDetail> selectLogisticsDetailList(XeVenOrderLogisticsForm logisticsForm);

    /**
     * 根据订单号查询物流详情 手机端接口调用
     *
     * @author 杜春静
     */
    List<XeVenOrderLogisticsDetail> listLogisticsDetail(@Param("orderId") String orderId, @Param("createDateSort") String createDateSort);

    /**
     * 物流单查询列表
     *
     * @author 赵盼飞
     */
    List<XeVenOrderLogisticsView> queryOrderLogisticsList(XeVenOrderLogisticsForm form);

    /**
     * 物流单查询，客户信息
     *
     * @author 赵盼飞
     */
    Map<String, Object> queryCustomerLogisticsDetail(XeVenOrderLogisticsForm form);

    /**
     * 物流单查询备注信息
     *
     * @author 赵盼飞
     */
    Map<String, Object> queryRemarkLogisticsDetail(XeVenOrderLogisticsForm form);

    /**
     * 根据物流单号查询派车页所需信息
     *
     * @author 赵盼飞
     */
    Map<String, Object> querySendCarLogisticsByLogtsCode(XeVenOrderLogisticsForm form);

    /**
     * 根据区域，用户,获取已派车物流单的车辆信息
     *
     * @author 赵盼飞
     */
    Map<String, Object> querylatelySendCarLogistics(Map<String, Object> paraMap);

    /**
     * 查询车辆列表
     *
     * @author 赵盼飞
     */
    List<Map<String, Object>> queryCarList(XeVenOrderLogisticsForm form);

    /**
     * 根据物流单号查询当前订单状态
     *
     * @author 赵盼飞
     */
    Map<String, Object> queryOrderStateByLogtCode(String logtCode);

    /**
     * 根据carId查询车辆路线
     *
     * @author 赵盼飞
     */
    Map<String, Object> queryCarLinesByCarId(Integer carId);

    /**
     * 根据物流单号数组查询派车页所需信息
     *
     * @author 赵盼飞
     */
    List<Map<String, Object>> querySendCarLogisticsByLogtsCodeArr(XeVenOrderLogisticsForm form);

    /**
     * 根据物流单号数组查询当前订单状态
     *
     * @author 赵盼飞
     */
    List<Map<String, Object>> queryOrderStateByLogtCodeArr(@Param("logtCodeArr") String[] logtCodeArr);

    /**
     * 获取用户的最新一条物流信息
     *
     * @author 杜春静
     */
    XeVenOrderLogisticsDetail getLatestLogistics(@Param("userId") String userId);

    /**
     * 查询物流派车列表
     *
     * @author 赵盼飞
     */
    List<XeVenOrderLogisticsView> querySendCarList(XeVenOrderLogisticsForm form);

    /**
     * 查询所有车辆列表
     *
     * @author 赵盼飞
     */
    List<Map<String, Object>> queryAllCarList(XeVenOrderLogisticsForm form);

    /**
     * 查询物流详情是否有
     *
     * @author 赵盼飞
     */
    Long selectLogisticsDetailListNumber(XeVenOrderLogisticsForm form);

    /**
     * 获取装车点，卸货点默认值，及历史记录
     *
     * @author 赵盼飞
     */
    List<Map<String, Object>> queryCarAddressList(XeVenCarForm carForm);

    /**
     * 获取装车点，卸货点默认值，及历史记录 只获取最近一条
     *
     * @author 赵盼飞
     */
    Map<String, Object> queryCarAddress(XeVenCarForm carForm);

    /**
     * 根据carId查询车辆信息
     *
     * @author 赵盼飞
     */
    Map<String, Object> queryCarInfoByCarId(Integer carId);

    XeVenOrderLogisticsView queryOrderLogisticsByOrderId(@Param("orderId") String orderId);
}